<HTML>
<HEAD>
<TITLE>
BloqueMemoria.cpp
</TITLE>
</HEAD>
<BODY>
<PRE>
<font color="blue">#include</font> <font color="maroon">"BloqueMemoria.h"</font>

BloqueMemoria<font color="black">:</font><font color="black">:</font>BloqueMemoria<font color="black">(</font>TipoMemoria tipoMemoria, <font color="blue">int</font> tamanio, <font color="blue">int</font> id, <font color="blue">void</font><font color="black">*</font> accesoMemoria<font color="black">)</font><font color="black">{</font>
    <font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>tipoMemoria <font color="black">=</font> tipoMemoria;
    <font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>tamanio <font color="black">=</font> tamanio;
    <font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>id <font color="black">=</font> id;
    <font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>bloque <font color="black">=</font> <font color="black">(</font><font color="blue">char</font><font color="black">*</font><font color="black">)</font>accesoMemoria;
    <font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>escribo<font color="black">(</font><font color="black">)</font>;
<font color="green">//  printf("bloque: %X\n",(unsigned int)this-&#62;bloque);</font>
<font color="black">}</font>

<font color="blue">void</font> BloqueMemoria<font color="black">:</font><font color="black">:</font>getAccesoDato<font color="black">(</font><font color="blue">void</font><font color="black">*</font><font color="black">*</font> accesoDato<font color="black">)</font><font color="black">{</font>
    <font color="black">*</font>accesoDato <font color="black">=</font> <font color="black">(</font><font color="blue">void</font><font color="black">*</font><font color="black">)</font> <font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>bloque; 
<font color="black">}</font>

<font color="blue">void</font> BloqueMemoria<font color="black">:</font><font color="black">:</font>addComponente<font color="black">(</font>ComponenteAlmacenamiento <font color="black">*</font>componente<font color="black">)</font><font color="black">{</font>
    <font color="blue">if</font><font color="black">(</font>componente<font color="black">-</font><font color="black">&#62;</font>getTipoMemoria<font color="black">(</font><font color="black">)</font><font color="black">!</font><font color="black">=</font><font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>tipoMemoria<font color="black">)</font>
        <font color="blue">throw</font> <font color="blue">new</font> CompuestoException<font color="black">(</font>CompuestoException<font color="black">:</font><font color="black">:</font>add<font color="black">)</font>;      
    <font color="blue">if</font><font color="black">(</font><font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>getTamanioLibre<font color="black">(</font><font color="black">)</font> <font color="black">&#60;</font> componente<font color="black">-</font><font color="black">&#62;</font>getTamanio<font color="black">(</font><font color="black">)</font><font color="black">)</font>
        <font color="blue">throw</font> <font color="blue">new</font> CompuestoException<font color="black">(</font>CompuestoException<font color="black">:</font><font color="black">:</font>add<font color="black">)</font>;      
    Compuesto<font color="black">:</font><font color="black">:</font>addComponente<font color="black">(</font>componente<font color="black">)</font>;
<font color="black">}</font>

<font color="blue">void</font> BloqueMemoria<font color="black">:</font><font color="black">:</font>leer<font color="black">(</font><font color="blue">char</font> <font color="black">*</font><font color="black">*</font>datoLeido, TipoSerializacion modo<font color="black">)</font><font color="black">{</font> 
<font color="green">/*  unsigned int i;
    for(i=0;i&#60;this-&#62;tamanio;i++)
        printf("%X",this-&#62;bloque[i]);
    printf("\n");   
*/</font>
    <font color="blue">if</font><font color="black">(</font><font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>bloque<font color="black">=</font><font color="black">=</font>NULL<font color="black">)</font>
        <font color="blue">throw</font> <font color="blue">new</font> NullPointerException<font color="black">(</font><font color="black">)</font>;
    <font color="black">*</font>datoLeido <font color="black">=</font> <font color="black">(</font><font color="blue">char</font><font color="black">*</font><font color="black">)</font> malloc<font color="black">(</font><font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>tamanio<font color="black">)</font>;
    <font color="blue">if</font><font color="black">(</font><font color="black">*</font>datoLeido<font color="black">=</font><font color="black">=</font>NULL<font color="black">)</font>
        <font color="blue">throw</font> <font color="blue">new</font> MemoryStorageException<font color="black">(</font>StorageException<font color="black">:</font><font color="black">:</font>lectura<font color="black">)</font>;
    <font color="blue">char</font><font color="black">*</font> destino;
    destino <font color="black">=</font> <font color="black">(</font><font color="blue">char</font><font color="black">*</font><font color="black">)</font> memmove<font color="black">(</font><font color="black">*</font>datoLeido,<font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>bloque,<font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>tamanio<font color="black">)</font>;
    <font color="blue">if</font><font color="black">(</font><font color="black">*</font>datoLeido<font color="black">!</font><font color="black">=</font>destino<font color="black">)</font>
        <font color="blue">throw</font> <font color="blue">new</font> MemoryStorageException<font color="black">(</font>StorageException<font color="black">:</font><font color="black">:</font>lectura<font color="black">)</font>;
<font color="black">}</font>

<font color="blue">void</font> BloqueMemoria<font color="black">:</font><font color="black">:</font>escribir<font color="black">(</font><font color="blue">void</font> <font color="black">*</font>accesoDisco, TipoSerializacion modo<font color="black">)</font><font color="black">{</font>
<font color="black">}</font>

<font color="blue">void</font> BloqueMemoria<font color="black">:</font><font color="black">:</font>escribir<font color="black">(</font>TipoSerializacion modo<font color="black">)</font><font color="black">{</font>
    <font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>escribo<font color="black">(</font><font color="black">)</font>;
    <font color="blue">int</font> i;
    <font color="green">//char *offset;</font>
    <font color="green">//offset = this-&#62;bloque;</font>
    try<font color="black">{</font>
        <font color="blue">for</font><font color="black">(</font>i<font color="black">=</font><font color="maroon">0</font>; i<font color="black">&#60;</font><font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>getCantidadComponentes<font color="black">(</font><font color="black">)</font>; i<font color="black">+</font><font color="black">+</font><font color="black">)</font><font color="black">{</font>
    <font color="green">/*      void *offset;
            this-&#62;getComponenteAt(i)-&#62;getAccesoDato(&offset);
            printf("registro: %X\n",(unsigned int) offset);
    */</font>      <font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>getComponenteAt<font color="black">(</font>i<font color="black">)</font><font color="black">-</font><font color="black">&#62;</font>escribir<font color="black">(</font>modo<font color="black">)</font>;
            <font color="green">//this-&#62;getComponenteAt(i)-&#62;escribir(offset,modo);</font>
            <font color="green">//offset += this-&#62;getComponenteAt(i)-&#62;getTamanio();</font>
        <font color="black">}</font>
    <font color="black">}</font>
    <font color="blue">catch</font><font color="black">(</font>MemoryStorageException e<font color="black">)</font><font color="black">{</font>
        <font color="blue">throw</font> <font color="blue">new</font> MemoryStorageException<font color="black">(</font>StorageException<font color="black">:</font><font color="black">:</font>escritura<font color="black">)</font>;
    <font color="black">}</font>
<font color="black">}</font>

<font color="blue">void</font> BloqueMemoria<font color="black">:</font><font color="black">:</font>escribir<font color="black">(</font><font color="blue">void</font> <font color="black">*</font>accesoDisco, Dato <font color="black">*</font>dato, TipoSerializacion modo<font color="black">)</font><font color="black">{</font>    
<font color="black">}</font>

<font color="blue">void</font> BloqueMemoria<font color="black">:</font><font color="black">:</font>borrar<font color="black">(</font><font color="black">)</font><font color="black">{</font>
    <font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>bloque <font color="black">=</font> NULL;
<font color="black">}</font>

<font color="blue">void</font> BloqueMemoria<font color="black">:</font><font color="black">:</font>escribo<font color="black">(</font><font color="black">)</font><font color="black">{</font>
    memset<font color="black">(</font>bloque,<font color="maroon">255</font>,<font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>tamanio<font color="black">)</font>;   <font color="green">// inicializo bloque en FFFFFF...</font>
<font color="black">}</font>

BloqueMemoria<font color="black">:</font><font color="black">:</font>~BloqueMemoria<font color="black">(</font><font color="black">)</font><font color="black">{</font>
    <font color="blue">this</font><font color="black">-</font><font color="black">&#62;</font>borrar<font color="black">(</font><font color="black">)</font>;
<font color="black">}</font>

</PRE>
</BODY>
</HTML>
